/*
 * Copyright (c) 2025 CAX Conversion Project
 */
package com.comac.ins.bomt.service;

import com.comac.ins.bomt.domain.vo.BizFileVo;
import com.comac.ins.bomt.domain.vo.BomInfoVo;
import com.comac.ins.bomt.domain.vo.DetailStandardBomVo;
import com.comac.ins.bomt.event.ModelStatusStrengthCompareEvent;
import com.comac.ins.bomt.event.StandardBomGenerateEvent;
import com.comac.ins.bomt.event.StrengthBomGenerateEvent;
import com.comac.ins.bomt.event.StrengthStandardCompareEvent;
import com.comac.ins.common.core.domain.model.LoginUser;

import java.util.List;
import java.util.Map;

/**
 * Bom生成服务
 *
 * @author zhanghongyi
 * @date 2024 /8/28
 * @description BomGenerateService
 */
public interface BomGenerateService {
    /**
     * 开始生成标准装机清单
     *
     * @param loginUser          the login user
     * @param groupedStandardVos the grouped standard vos
     * @param aircraftModel      the aircraft model
     * @param track              the track
     * @param fileVo             the file vo
     * @return the list
     */
    List<BomInfoVo> beginGenerateStandard(LoginUser loginUser, Map<String, List<DetailStandardBomVo>> groupedStandardVos, String aircraftModel, String track, BizFileVo fileVo);

    /**
     * 进行标准装机清单生成.
     *
     * @param event the event
     */
    void doStandardBomGenerate(StandardBomGenerateEvent event);

    /**
     * 开始强度数模清单生成
     *
     * @param loginUser     the login user
     * @param aircraftModel the aircraft model
     * @param bomIds        the bom ids
     */
    void beginGenerateStrength(LoginUser loginUser, String aircraftModel, List<Long> bomIds);

    /**
     * 进行强度数模清单生成.
     *
     * @param event the event
     */
    void doStrengthBomGenerate(StrengthBomGenerateEvent event);

    /**
     * 开始生成强度Vs标准
     *
     * @param loginUser     the login user
     * @param aircraftModel the aircraft model
     * @param compareTrack  the compare track
     * @param bomIds        the bom ids
     */
    void beginGenerateStrengthVsStandard(LoginUser loginUser, String aircraftModel, String compareTrack, List<Long> bomIds);

    /**
     * 进行强度Vs标准对比生成
     *
     * @param event the event
     */
    void doStrengthStandardCompareGenerate(StrengthStandardCompareEvent event);

    /**
     * 开始生成状态Vs强度
     *
     * @param loginUser     the login user
     * @param aircraftModel the aircraft model
     * @param bomIds        the bom ids
     */
    void beginGenerateStatusVsStrength(LoginUser loginUser, String aircraftModel, List<Long> bomIds);

    /**
     * 进行状态Vs强度的生成
     *
     * @param event the event
     */
    void doStatusStrengthCompareGenerate(ModelStatusStrengthCompareEvent event);
}
